<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');

/**
 * 人物模型类
 * @author wb_wenjie.wuwj <wb_wenjie.wuwj@alibaba-inc.com>
 * @copyright 2013-2-21
 */

class Person_m extends MY_Model
{
	function __construct()
	{
		parent::__construct();
		
		// 加载上传设置参数
		$this->config->load('upload');
	}
	
	/**
	 * 查询人物数量
	 */
	function get_person_count()
	{
		return $this->count_all('person');
	}
	
	/**
	 * 查询人物状态标识
	 * @param array $where 查询条件
	 * @param string $limit 返回结果数
	 * @return boolean
	 */
	function get_person_state($where, $limit = '1')
	{
		$this->db->select('id,personname,isrecommend,istop,ishot,isactive,isverify');
		$this->db->from('person');
		$this->db->where($where);
		$this->db->limit($limit);
		$qurey = $this->db->get();
		return $qurey->result_array();
	}
	
	/**
	 * 查询人物内容
	 * @param array $where 查询条件
	 * @param string $order 排序方式
	 * @param string $limit 查询返回结果数
	 * @return boolean
	 */
	function get_person($where, $order = 'ID DESC', $limit = '1')
	{
		$this->db->select("person.*,column.fatherid,column.columnname,person_introduction.content,person_introduction.keyword,person_photo.path");
		$this->db->from('person');
		$this->db->join('column', 'column.id=person.classid', 'LEFT');
		$this->db->join('person_introduction', 'person_introduction.personid=person.id', 'LEFT');
		$this->db->join('person_photo', 'person_photo.personid=person.id', 'LEFT');
		$this->db->where($where);
		$this->db->order_by($order);
		$this->db->limit($limit);
		$query = $this->db->get();
		return $query->result_array();
	}
	
	/**
	 * 根据偏移量查询人物内容，与分类表内联查询
	 * @param array $limit
	 * @param string $order
	 * @return array
	 */
	function show_person($limit, $order = 'id desc')
	{
		$this->db->select("person.*,column.fatherid,column.columnname,person_photo.path");
		$this->db->from('person');
		$this->db->join('column', 'column.id=person.classid', 'LEFT');
		$this->db->join('person_photo', 'person_photo.personid=person.id', 'LEFT');
		$this->db->order_by($order);
		$this->db->limit($limit['limit_end'], $limit['limit_from']);
		$query = $this->db->get();
		return $query->result_array();
	}
	
	/**
	 * 根据人物id删除人物及人物内容表记录，并解除与人物附件的id绑定
	 * @param array $id
	 * @return boolean
	 */
	function delete_person_by_id($id)
	{
		$this->delete_introduction(array('personid' => $id));
		
		// 将要删除的人物附件表记录中bindid标记为0，不做删除
		foreach ($id as $value)
		{
			$this->update_person_photo(array('personid' => $value), array('personid' => 0));
		}
		
		$result = $this->delete_record('person', array('id' => $id));
		return $result;
	}
	
	/**
	 * 删除人物内容表记录
	 * @param array $where 删除条件
	 * @return boolean
	 */
	function delete_introduction($where)
	{
		return $this->delete_record('person_introduction', $where);
	}
	
	/**
	 * 添加人物内容
	 * @param array $person 人物表内容
	 * @param array $introduction 人物内容表
	 * @param array $attachment 附件内容
	 * @return boolean|unknown
	 */
	function insert_person($person, $introduction, $photo)
	{
		$result = $this->insert('person', $person);
		$person_id = $this->db->insert_id();
		if(!$person_id)
		{
			return FALSE;
		}
		else
		{
			$introduction['personid'] = $person_id;
			$this->insert_person_introduction($introduction);
			if (!empty($photo))
			{
				$photo['personid'] = $person_id;
				$this->insert_person_photo($photo);
			}
			return $person_id;
		}
	}
	
	/**
	 * 添加人物内容记录
	 * @param array $data 添加内容
	 * @return boolean
	 */
	function insert_person_introduction($data)
	{
		// @TODO 处理人物ID存在的问题
		return $this->insert('person_introduction', $data);
	}
	
	/**
	 * 添加人物照片
	 * @param array $data
	 * @return boolean
	 */
	function insert_person_photo($data)
	{
		return $this->insert('person_photo', $data);
	}
	
	/**
	 * 更新人物
	 * @param array $where 更新条件
	 * @param array $data 更新内容
	 * @return boolean
	 */
	function update_person($where, $data)
	{
		return $this->update('person', $where, $data);
	}
	
	/**
	 * 更新人物内容表
	 * @param array $where 更新条件
	 * @param array $data 更新内容
	 * @return boolean
	 */
	function update_person_introduction($where, $data)
	{
		return $this->update('person_introduction', $where, $data);
	}
	
	/**
	 * 更新人物照片
	 * @param array $where 更新条件
	 * @param array $data 更新内容
	 * @return boolean
	 */
	function update_person_photo($where, $data)
	{
		return $this->update('person_photo', $where, $data);
	}
	
	/* (non-PHPdoc)
	 * @see MY_Model::count_all_results()
	 */
	function count_all_results($where)
	{
		return parent::count_all_results('person_photo', $where);
	}
}